#ifndef VarTable_h
#define VarTable_h

#include "Standards.h"

class VarTable
{
	public:
		
		//! Constructor
		VarTable();
		
		//! A method that gets the size of the table
		/*!
		  \return The size of the table
		*/
		int getSize();
		
		//! A method that inserts a name into the varTable
		/*!
		  \param NAME The name to insert into the varTable
		  \return index of the inserted var
		*/
		void updateLastMod(INDEX,INDEX);

		INDEX getLastMod(INDEX);

		//! A method that inserts a name into the varTable
		/*!
		  \param NAME The name to insert into the varTable
		  \return index of the inserted var
		*/
		INDEX insertVar(NAME);
		
		//! A method that gets a name from the varTable
		/*!
		  \param INDEX The index to check with the varTable
		  \return The name stored in the index in the varTable
		*/
		NAME getVarName(INDEX);
		
		//! A method that gets an index from the varTable
		/*!
		  \param NAME The name to check with the varTable
		  \return The specific index of the name stored in the varTable
		*/
		INDEX getVarIndex(NAME);
		
		//! A method that prints the contents of the table
		void printVarTable();
		
		unordered_map<INDEX,NAME> varTable;
		unordered_map<INDEX,INDEX> varTableLastModified;

	private:
		INDEX count;		
};

#endif